package com.demo.core.dao.base.support;

import java.util.List;
import java.util.Map;

/**
 * 排序接口
 * Action继承该接口将支持自动排序
 * 当传递排序字段和升降序类型时
 * 由SortMap自动转化为内部SQL的排序字段
 * 
 * @author ryuu.kk
 *
 */
public interface SortAble {

	/**
	 * 设置排序字段
	 * @param sortList 排序字段列表
	 */
	void setSortList(List<Sort> sortList);
	
	/**
	 * 设置排序字段映射
	 * 外部排序字段-内部COLUMN对应字段
	 * @return sortMapping 映射Map
	 */
	Map<String, String> getSortMapping();

	/**
	 * 是否允许自动匹配排序字段
	 * 例如:外部传入userName将自动转换成COLUMN:USER_NAME;
	 * 注意,该做法有隐含漏洞,函数将无法判断传入的字符串是否是合法字符串
	 * @param boolean 允许?
	 */
	void allowAutoMatch(boolean allow);
	
	/**
	 * Order 排序模型
	 * 
	 * @author ryuu.kk
	 */
	class Sort{
		// 排序字段(外部字段,非对应SQL的Column)
		String name;
		// 排序类型(-1：不排序; 0:ASC升序; 1:DESC降序)
		int type = -1;

		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public int getType() {
			return type;
		}
		public void setType(int type) {
			this.type = type;
		}
	}
}
